"""
reduce()规约
    1.python3中，reduce()不再是内置函数，移到functools模块
        将一个可以迭代的序列，作用到一个具有两个参数的函数上。
            将函数的计算结果，和列表中的下一个数据，累积运算。
    2.reduce(func,sequence,initial),
        第一个参数：func
            def fun(x, y):
                return 。。。。。

        第二个参数：序列
            [元素1，元素2，元素3.。。。。。]
        第三个参数：初始值
"""
from functools import reduce

r1 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])  # ((((1+2)+3)+4)+5)

# [3, 3, 4, 5]
# [6, 4, 5]
# [10, 5]
# 15

print(r1)

sum_100 = reduce(lambda x, y: x + y, [x for x in range(1, 101)])
print(sum_100)

jiecheng_5 = reduce(lambda x, y: x * y, [1, 2, 3, 4, 5], 2)
print(jiecheng_5)

# [1, 2, 3, 4, 5]  --> 12345
list1 = [1, 2, 3, 4, 5]
# hh = reduce(lambda x, y: 10 * x + y, list1)
# print(hh)
gg = reduce(lambda x, y: x / 10 + y, [1, 2, 3, 4, 5], )
print(gg)

point = 0


def to_float(f, n):
    global point
    if n == -1:
        point = 1
        return f
    if point == 0:
        return f * 10 + n
    else:
        point = point * 10
        return f + n / point


to_float()
